In general, electronic systems used in a variety of applications require a high degree of operational reliability. For example, electronic systems in telecommunications networks often require a certain degree of operational reliability. Similarly, for example, computer systems used in various other applications, such as transaction processors, web servers, airline traffic control systems, and the like, require high degrees of operational reliability. This leads to system designs requiring fault tolerant features in both the hardware and software portions of such electronic systems. Although redundant hardware is typically provided in such systems, systems having high reliability requirements need appropriate testing capabilities for verifying such fault tolerant features.
Due to the increasing complexity of electronic systems, as well as increasing demand for high reliability from electronic systems, testing of electronic systems is performed to ensure that system software detects failure conditions in the system hardware. In existing system software testing schemes, hardware fault injection methods are used to inject static faults into the system hardware in order to determine whether the system software detects the static faults. For example, static faults such as stuck_at and stuck_open may be injected into the electronic system in order to determine if the system software detects these static faults. Disadvantageously, however, support for testing dynamic faults does not currently exist.